package egovframework.template.guide.service.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import egovframework.template.guide.service.NotificationVO;

/**
 * 정보알림이를 위한 데이터 접근 클래스
 * 
 * @author 개발팀 홍길동
 * @since 2010.01.01
 * @version 1.0
 * @see <pre>
 * &lt;&lt; 개정이력(Modification Information) &gt;&gt;
 *   
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2010.01.01  홍길동          최초 생성
 * 
 * </pre>
 */
@Repository("NotificationDAO")
public class NotificationDAO extends EgovAbstractDAO {
    /**
     * 정보알림이 목록을 조회한다.
     * 
     * @param NotificationVO
     */
    @SuppressWarnings("unchecked")
    public List<NotificationVO> selectNotificationList(NotificationVO vo) throws Exception {
	return list("NotificationDAO.selectNotificationList", vo);
    }

    /**
     * 정보알림이 목록 숫자를 조회한다
     * 
     * @param vo
     * @return
     * @throws Exception
     */
    public int selectNotificationListCnt(NotificationVO vo) throws Exception {
	return (Integer)getSqlMapClientTemplate().queryForObject("NotificationDAO.selectNotificationListCnt", vo);
    }

    /**
     * 정보알림이 정보를 등록한다.
     * 
     * @param notification
     * @return
     * @throws Exception
     */
    public String insertNotification(NotificationVO notification) throws Exception {
	return (String)insert("NotificationDAO.insertNotification", notification);
    }
    
    /**
     * 정보알림이에 대한 상세정보를 조회한다.
     * 
     * @param searchVO
     * @return
     */
    public NotificationVO selectNotification(NotificationVO searchVO) {
	return (NotificationVO)selectByPk("NotificationDAO.selectNotification", searchVO);
    }

    /**
     * 정보알림이 정보를 수정한다.
     * 
     * @param notification
     * @return
     * @throws Exception
     */
    public void updateNotification(NotificationVO notification) throws Exception {
	update("NotificationDAO.updateNotification", notification);
    }

    /**
     * 정보알림이 정보를 삭제한다.
     * 
     * @param notification
     * @throws Exception
     */
    public void deleteNotification(NotificationVO notification) throws Exception {
	update("NotificationDAO.deleteNotification", notification);
    }

    /**
     * 정보알림이 표시를 위한 대상 알림 정보를 얻는다.
     * 
     * @param vo
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    public List<NotificationVO> getNotificationData(NotificationVO vo) throws Exception {
	return list("NotificationDAO.getNotificationData", vo);
    }
}